package model.value;

import constants.Constants;

/** 
 * Implémentation de l'interface VersionnedValue.
 */
public class VersionnedValueImpl implements VersionnedValue {
	
	private int value;
	private int version;
	
	public VersionnedValueImpl() {
		value = Constants.SENSOR_DEFAULT_VALUE;
		version = 0;
	}
	
	@Override
	public int getValue() {
		return value;
	}

	@Override
	public int getVersion() {
		return version;
	}

	@Override
	public void setValue(int value) {
		if(this.value != value) {
			this.value = value;
			version++;
		}
	}
	
	@Override
	public void setVersion(int version) {
		this.version = version;
	}
	
	@Override
	public VersionnedValue copy() {
		VersionnedValue copy = new VersionnedValueImpl();
		copy.setValue(value);
		copy.setVersion(version);
		
		return copy;
	}

}
